C#.NStar Pre-Pre-I-3
Привет, неизвестный путник! Здесь вы можете
просмотреть информацию о C#.NStar Pre-Pre-I-3. Вы можете скачать
EXE или просмотреть список изменений, скриншоты и/или видео.
Что уже проверено и работает в
дополнение к версии Pre-Pre-I-2o2:
1. Именованные константы.
2. Тип typename, значениями которого являются типы. Возможны ошибки, прошу протестировать.
3. new() - конструктор с автоматическим определением конструируемого типа.
4. Перегрузка функций, иногда позволяющая даже то, что в C#.NET не позволяется.
5. Как и обещал, выражения switch. Их синтаксис такой же, как в C#.NET, за двумя исключениями:
1 - если выражение многострочное (если от источника до закрывающей фигурной скобки есть хоть один перевод строки,
это уже многострочное выражение), запятая перед закрывающей фигурной скобкой обязательна;
2 - вместо when используется if.
Также, транспайлер может упасть, если не указать опцию по умолчанию (_).
6. Оператор typeof(), возвращающий тип выражения в скобках. Возвращенный тип можно присвоить переменной рекурсивного типа,
а затем использовать эту переменную как тип другой переменной. При этом действии технически вызывается рефлексия,
поэтому оно медленное, а в таких переменных преобразуются только элементарные типы и строка
(при попытке в таком контексте преобразовать число в список произойдет падение).
7. Прототип GUI, с помощью которого уже можно написать простое приложение, например, игру "три в ряд".
Пример кода здесь.
Рабочие примеры кода на C#.NStar (включая выдающие корректные ошибки):
static Class MyClass
{
closed const string A1000000 = A100000 + A100000 + A100000 + A100000 + A100000 + A100000 + A100000 + A100000 + A100000 + A100000;
closed const string A100000 = A10000 + A10000 + A10000 + A10000 + A10000 + A10000 + A10000 + A10000 + A10000 + A10000;
closed const string A10000 = A1000 + A1000 + A1000 + A1000 + A1000 + A1000 + A1000 + A1000 + A1000 + A1000;
closed const string A1000 = A100 + A100 + A100 + A100 + A100 + A100 + A100 + A100 + A100 + A100;
closed const string A100 = A10 + A10 + A10 + A10 + A10 + A10 + A10 + A10 + A10 + A10;
closed const string A10 = "AAAAAAAAAA";
}
return MyClass.A1000000;
static Class MyClass
{
closed const string A100 = A10 + A10 + A10 + A10 + A10 + A10 + A10 + A10 + A10 + A10;
closed string A10 = "AAAAAAAAAA";
}
return MyClass.A100;
const int n = 3;
list(n) int list = 8;
list = 123;
return list;
const int n = 2;
(int, int)[n] Function F()
{
Class MyClass
{
int a = 0;
}
MyClass b = new MyClass(5);
return ((b.a, new MyClass(8).a), (b.a, new MyClass(8).a));
}
return F();
using System;
using System.Collections;
const typename real = ListHashSet[int];
typename T = Func[real];
return T;
typename real = int;
repeat (1)
{
real = System.Collections.Buffer[real];
}
real x = new(1, 123);
return x;
null Function F()
{
}
int Function F(int x)
{
return x * x;
}
F();
return F(5);
{
F(5);
null Function F(int x)
{
}
}
int Function F(int x)
{
return x * x;
}
return F(5);
return 5 switch
{
0 => 0,
1 => 2,
2 => 4,
3 => 6,
_ => 16,
};
return "5" switch
{
"0" => "0",
"1" => "2",
"2" => "4",
"3" => "6",
_ => "16"
};
var x = 5.1;
typename T = typeof(x);
T y = 8;
return typeof(y);
Все остальное
не проверено и, скорее всего, не
работает
.
Ссылка на EXE (~40 MB)
Назад ко всем версиям